package com.ternnetwork.workflow.service;

import java.io.InputStream;
import java.util.Map;

import org.springframework.data.domain.Pageable;

import com.ternnetwork.commons.model.http.BaseResponse;
import com.ternnetwork.workflow.dto.HistoricProcessInstanceQueryDto;

public interface ProcessInstanceService {
	
	/**
	 * 发起一个流程
	 * identityService.setAuthenticatedUserId(userName) 作用是设置流程的发起者
	 * startEvent 元素的 activiti:initiator="owner" 属性将发起者赋值给 owner
	 * 那么userTask元系的assignee="owner"属性将使此任务的认领者就是流程的发起者
	 * @param userName 发起用户
	 * @param processDefinitionId 流程定义ID
	 * @param oriFormDataMap 表单原始数据
	 * @return
	 */
	 BaseResponse startProcessInstanceByKey(String userName,String processDefinitionId,Map<String,String[]> oriFormDataMap);
	
	
	
	/**
	 * 查找历史经办流程实例
	 * @param pageable
	 * @param dto
	 * @return
	 */
	 BaseResponse findByPage(Pageable pageable,HistoricProcessInstanceQueryDto dto);

	
	
	/**
	 * 获取启动时的表单参数
	 * @param processDefinitionId
	 * @return
	 */
	BaseResponse getStartFormData(String processDefinitionId);
	
	
	
	/**
	 * 获取流程实例图
	 * @param id
	 * @return
	 */
    InputStream getDiagram(String id);
	


   
	
	
	
	/**
	 * 删除流程实例
	 * @param id 流程实例id
	 * @return
	 */
    BaseResponse delete(String id);

}
